#include <iostream>
#include <string.h>
#include <math.h>
using namespace std;


struct item{
	int value,weight,volume;
};


int main(){
	int v,w,m;
	cin>>v>>w>>m;
	item a[m];
	int dp[w+1][v+1];
	memset(dp,0,sizeof(dp));
	for(int i=0;i<m;i++){
		cin>>a[i].volume>>a[i].weight>>a[i].value;
	}
	for(int i=1;i<=m;i++){
		for(int j=w;j>=0;j--)
			for(int k=v;k>=0;k--){
//				cout<<"i)"<<i<<"j)"<<j<<"k)"<<k<<endl;
				dp[j][k] = max(dp[j][k],j-a[i-1].weight>=0&&k-a[i-1].volume>=0?dp[j-a[i-1].weight][k-a[i-1].volume]+a[i-1].value:0);
			}
	}
	
//	for(int i=0;i<=m;i++){
//		for(int j=0;j<=w;j++){
//			for(int k=0;k<=v;k++)
//				cout<<dp[j][k]<<" ";
//			cout<<endl;
//		}
//		cout<<endl;
//	}

	cout<<dp[w][v];
	return 0;
}

